package top.zhangjianyong.blog.annotation;

import java.lang.annotation.*;

/**
 * API日志注解 用于标记需要记录详细日志的接口方法
 *
 * @author zhangjianyong
 * @since 2024/12/27
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ApiLog {

  /**
   * 是否记录请求参数
   *
   * @return 默认为true
   */
  boolean logRequest() default true;

  /**
   * 是否记录响应结果
   *
   * @return 默认为true
   */
  boolean logResponse() default true;

  /**
   * 是否记录执行时间
   *
   * @return 默认为true
   */
  boolean logTime() default true;

  /**
   * 日志描述信息
   *
   * @return 接口描述
   */
  String description() default "";

  /**
   * 是否忽略该方法的日志记录
   *
   * @return 默认为false
   */
  boolean ignore() default false;
}
